package com.lostreseditores.sabersai.presentation.backingBeans;

import java.util.List;
import java.util.TimeZone;

import org.primefaces.component.commandbutton.CommandButton;
import org.primefaces.component.inputtext.InputText;
import org.primefaces.event.RowEditEvent;

import com.lostreseditores.sabersai.exceptions.ZMessManager;
import com.lostreseditores.sabersai.model.Resultadoxestudiante;
import com.lostreseditores.sabersai.model.dto.ResultadoxestudianteDTO;
import com.lostreseditores.sabersai.presentation.businessDelegate.BusinessDelegatorView;
import com.lostreseditores.sabersai.utilities.FacesUtils;


public class ResultadoxestudianteView {
    private InputText txtAsigxexamidn_Asignaturaxexamen;
    private InputText txtCalixestuidn_Calificacionxestudiante;
    private InputText txtResulxestuidn;
    private CommandButton btnSave;
    private CommandButton btnModify;
    private CommandButton btnDelete;
    private CommandButton btnClear;
    private List<ResultadoxestudianteDTO> data;
    private ResultadoxestudianteDTO selectedResultadoxestudiante;

    public ResultadoxestudianteView() {
        super();
    }

    public void rowEventListener(RowEditEvent e) {
        try {
            ResultadoxestudianteDTO resultadoxestudianteDTO = (ResultadoxestudianteDTO) e.getObject();

            if (txtAsigxexamidn_Asignaturaxexamen == null) {
                txtAsigxexamidn_Asignaturaxexamen = new InputText();
            }

            txtAsigxexamidn_Asignaturaxexamen.setValue(resultadoxestudianteDTO.getAsigxexamidn_Asignaturaxexamen());

            if (txtCalixestuidn_Calificacionxestudiante == null) {
                txtCalixestuidn_Calificacionxestudiante = new InputText();
            }

            txtCalixestuidn_Calificacionxestudiante.setValue(resultadoxestudianteDTO.getCalixestuidn_Calificacionxestudiante());

            if (txtResulxestuidn == null) {
                txtResulxestuidn = new InputText();
            }

            txtResulxestuidn.setValue(resultadoxestudianteDTO.getResulxestuidn());

            action_modify();
        } catch (Exception ex) {
        }
    }

    public String action_clear() {
        if (txtAsigxexamidn_Asignaturaxexamen != null) {
            txtAsigxexamidn_Asignaturaxexamen.setValue(null);
            txtAsigxexamidn_Asignaturaxexamen.setDisabled(true);
        }

        if (txtCalixestuidn_Calificacionxestudiante != null) {
            txtCalixestuidn_Calificacionxestudiante.setValue(null);
            txtCalixestuidn_Calificacionxestudiante.setDisabled(true);
        }

        if (txtResulxestuidn != null) {
            txtResulxestuidn.setValue(null);
            txtResulxestuidn.setDisabled(false);
        }

        if (btnSave != null) {
            btnSave.setDisabled(true);
        }

        if (btnDelete != null) {
            btnDelete.setDisabled(true);
        }

        if (btnModify != null) {
            btnModify.setDisabled(true);
        }

        if (btnClear != null) {
            btnClear.setDisabled(false);
        }

        return "";
    }

    public void listener_txtId() {
        Resultadoxestudiante entity = null;

        try {
            Integer resulxestuidn = new Integer(txtResulxestuidn.getValue()
                                                                .toString());
            entity = BusinessDelegatorView.getResultadoxestudiante(resulxestuidn);
        } catch (Exception e) {
            // TODO: handle exception
        }

        if (entity == null) {
            txtAsigxexamidn_Asignaturaxexamen.setDisabled(false);
            txtCalixestuidn_Calificacionxestudiante.setDisabled(false);
            txtResulxestuidn.setDisabled(false);
            btnSave.setDisabled(false);
            btnDelete.setDisabled(true);
            btnModify.setDisabled(true);
            btnClear.setDisabled(false);
        } else {
            txtAsigxexamidn_Asignaturaxexamen.setValue(entity.getAsignaturaxexamen()
                                                             .getAsigxexamidn());
            txtAsigxexamidn_Asignaturaxexamen.setDisabled(false);
            txtCalixestuidn_Calificacionxestudiante.setValue(entity.getCalificacionxestudiante()
                                                                   .getCalixestuidn());
            txtCalixestuidn_Calificacionxestudiante.setDisabled(false);
            txtResulxestuidn.setValue(entity.getResulxestuidn());
            txtResulxestuidn.setDisabled(true);
            btnSave.setDisabled(true);
            btnDelete.setDisabled(false);
            btnModify.setDisabled(false);
            btnClear.setDisabled(false);
        }
    }

    public String action_save() {
        try {
            BusinessDelegatorView.saveResultadoxestudiante(FacesUtils.checkInteger(
                    txtResulxestuidn),
                FacesUtils.checkInteger(txtAsigxexamidn_Asignaturaxexamen),
                FacesUtils.checkInteger(txtCalixestuidn_Calificacionxestudiante));
            FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYSAVED);
            action_clear();
        } catch (Exception e) {
            FacesUtils.addErrorMessage(e.getMessage());
        }

        return "";
    }

    public String action_delete() {
        try {
            BusinessDelegatorView.deleteResultadoxestudiante(FacesUtils.checkInteger(
                    txtResulxestuidn));
            FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYDELETED);
            action_clear();
        } catch (Exception e) {
            FacesUtils.addErrorMessage(e.getMessage());
        }

        return "";
    }

    public String action_modify() {
        try {
            BusinessDelegatorView.updateResultadoxestudiante(FacesUtils.checkInteger(
                    txtResulxestuidn),
                FacesUtils.checkInteger(txtAsigxexamidn_Asignaturaxexamen),
                FacesUtils.checkInteger(txtCalixestuidn_Calificacionxestudiante));
            FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYMODIFIED);
            action_clear();
        } catch (Exception e) {
            data = null;
            FacesUtils.addErrorMessage(e.getMessage());
        }

        return "";
    }

    public String actionDeleteDataTableEditable() {
        try {
            if (txtResulxestuidn == null) {
                txtResulxestuidn = new InputText();
            }

            txtResulxestuidn.setValue(selectedResultadoxestudiante.getResulxestuidn());

            BusinessDelegatorView.deleteResultadoxestudiante(FacesUtils.checkInteger(
                    txtResulxestuidn));
            FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYDELETED);
            action_clear();
            data.remove(selectedResultadoxestudiante);
        } catch (Exception e) {
            FacesUtils.addErrorMessage(e.getMessage());
        }

        return "";
    }

    public String action_modifyWitDTO(Integer resulxestuidn,
        Integer asigxexamidn_Asignaturaxexamen,
        Integer calixestuidn_Calificacionxestudiante) throws Exception {
        try {
            BusinessDelegatorView.updateResultadoxestudiante(resulxestuidn,
                asigxexamidn_Asignaturaxexamen,
                calixestuidn_Calificacionxestudiante);
            FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYMODIFIED);
        } catch (Exception e) {
            //renderManager.getOnDemandRenderer("ResultadoxestudianteView").requestRender();
            FacesUtils.addErrorMessage(e.getMessage());
            throw e;
        }

        return "";
    }

    public InputText getTxtAsigxexamidn_Asignaturaxexamen() {
        return txtAsigxexamidn_Asignaturaxexamen;
    }

    public void setTxtAsigxexamidn_Asignaturaxexamen(
        InputText txtAsigxexamidn_Asignaturaxexamen) {
        this.txtAsigxexamidn_Asignaturaxexamen = txtAsigxexamidn_Asignaturaxexamen;
    }

    public InputText getTxtCalixestuidn_Calificacionxestudiante() {
        return txtCalixestuidn_Calificacionxestudiante;
    }

    public void setTxtCalixestuidn_Calificacionxestudiante(
        InputText txtCalixestuidn_Calificacionxestudiante) {
        this.txtCalixestuidn_Calificacionxestudiante = txtCalixestuidn_Calificacionxestudiante;
    }

    public InputText getTxtResulxestuidn() {
        return txtResulxestuidn;
    }

    public void setTxtResulxestuidn(InputText txtResulxestuidn) {
        this.txtResulxestuidn = txtResulxestuidn;
    }

    public List<ResultadoxestudianteDTO> getData() {
        try {
            if (data == null) {
                data = BusinessDelegatorView.getDataResultadoxestudiante();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return data;
    }

    public void setData(List<ResultadoxestudianteDTO> resultadoxestudianteDTO) {
        this.data = resultadoxestudianteDTO;
    }

    public ResultadoxestudianteDTO getSelectedResultadoxestudiante() {
        return selectedResultadoxestudiante;
    }

    public void setSelectedResultadoxestudiante(
        ResultadoxestudianteDTO resultadoxestudiante) {
        this.selectedResultadoxestudiante = resultadoxestudiante;
    }

    public CommandButton getBtnSave() {
        return btnSave;
    }

    public void setBtnSave(CommandButton btnSave) {
        this.btnSave = btnSave;
    }

    public CommandButton getBtnModify() {
        return btnModify;
    }

    public void setBtnModify(CommandButton btnModify) {
        this.btnModify = btnModify;
    }

    public CommandButton getBtnDelete() {
        return btnDelete;
    }

    public void setBtnDelete(CommandButton btnDelete) {
        this.btnDelete = btnDelete;
    }

    public CommandButton getBtnClear() {
        return btnClear;
    }

    public void setBtnClear(CommandButton btnClear) {
        this.btnClear = btnClear;
    }

    public TimeZone getTimeZone() {
        return java.util.TimeZone.getDefault();
    }
}
